package com.tsy.server.media.service;

import com.tsy.server.media.model.MediaFileDTO;
import com.dji.sdk.cloudapi.media.MediaUploadCallbackRequest;
import com.dji.sdk.common.PaginationData;

import java.net.URL;
import java.util.List;

/**
 * @author sean
 * @version 0.2
 * @date 2021/12/9
 */
public interface IFileService {

    /**
     * 根据工作空间ID与文件指纹查询文件是否已存在。
     * @param workspaceId 工作空间ID
     * @param fingerprint 文件指纹
     * @return
     */
    Boolean checkExist(String workspaceId, String fingerprint);

    /**
     * 将文件基础信息保存到数据库。
     * @param workspaceId 工作空间ID
     * @param file 文件回调数据
     * @return
     */
    Integer saveFile(String workspaceId, MediaUploadCallbackRequest file);

    /**
     * 根据工作空间ID查询该空间下的所有文件信息。
     * @param workspaceId 工作空间ID
     * @return
     */
    List<MediaFileDTO> getAllFilesByWorkspaceId(String workspaceId);

    /**
     * 分页查询该工作空间内的所有媒体文件。
     * @param workspaceId 工作空间ID
     * @param page 页码
     * @param pageSize 分页大小
     * @return
     */
    PaginationData<MediaFileDTO> getMediaFilesPaginationByWorkspaceId(String workspaceId, long page, long pageSize);

    /**
     * 获取文件的下载地址。
     * @param workspaceId 工作空间ID
     * @param fileId 文件ID
     * @return
     */
    URL getObjectUrl(String workspaceId, String fileId);

    /**
     * 查询某个任务的全部媒体文件。
     * @param workspaceId 工作空间ID
     * @param jobId 任务ID
     * @return
     */
    List<MediaFileDTO> getFilesByWorkspaceAndJobId(String workspaceId, String jobId);
}
